#ifndef COMMON_H
#define COMMON_H

#include <QDebug>
#include <QWidget>
#include <QString>
#include <QListWidgetItem>
#include <QNetworkAccessManager>

#define cout qDebug() << "[ " << __FILE__ << ":"  << __LINE__ << " ] "

// 文件路径
const QString CONFFILE      = "../conf/cfg.json";     // 配置文件

// 正则表达式
const QString USER_REG      = "^[a-zA-Z\\d_@#-\\*]{3,16}$";
const QString PASSWD_REG    = "^[a-zA-Z\\d_@#-\\*]{6,18}$";
const QString PHONE_REG     = "1\\d{10}";
const QString IP_REG        = "((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)";
const QString PORT_REG      = "^[1-9]$|(^[1-9][0-9]$)|(^[1-9][0-9][0-9]$)|(^[1-9][0-9][0-9][0-9]$)|(^[1-6][0-5][0-5][0-3][0-5]$)";


class Common : public QObject
{
    Q_OBJECT

public:
    Common(QObject* parent = 0);
    ~Common();

    // 从配置文件中得到相对应的参数
    QString getCfgValue(QString title, QString key, QString path = CONFFILE);

    // 登录信息，写入配置文件
    void writeLoginInfo(QString user, QString pwd, bool isRemeber, QString path = CONFFILE);

    // 服务器信息，写入配置文件
    void writeWebInfo(QString ip, QString port, QString path=CONFFILE);

    // 将某个字符串加密成md5码
    QString getStrMd5(QString str = "");

    // 得到http通信类对象
    static QNetworkAccessManager* getNetManager();

private:
    // 主要保存文件类型的后缀
    // http类
    static QNetworkAccessManager *m_netManager;
};

#endif // COMMON_H

